<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;

class CateController extends Controller
{
    

    /**
     * 处理分类
     */
    static public function getCates()
    {

       
       $data = DB::table('sad_type')->select(DB::raw("*,concat(path,',',id) as paths"))->orderBy('paths')->get();
        foreach ($data as $key => $value) {
            // 统计一个字符串在另一个字符串出现次数
            $len = substr_count($value['path'],',');
            // $data[$key]['name']
            // |----男装
            // 重复的使用一个字符串
           $data[$key]['name'] = str_repeat('|----',$len).$value['name'];
        }
        return $data;
    }

    public function getAdd($id='')
    {

        //加载模板
        return view('admin.cate.add',['data'=>self::getCates(),'id'=>$id]);


    }

    /**
     * 分类的添加处理
     */

    public function postInsert(Request $request)
    {

         $temp = $request -> except('_token');
        $pid = $temp['pid'];

        if($pid == 0){
            // 顶级分类
            $temp['path'] = 0;
        }else{
            // 不是顶级分类
            $parentData = DB::table('sad_type')->where('id',$pid)->first();
            $temp['path'] =  $parentData['path'].','.$parentData['id'];
        }
        //将数据插入到数据库
        $res =DB::table('sad_type')->insert($temp);
        if($res){
            return redirect('/cate/index')->with('success','添加成功');
        }else{
            return back()->with('error','添加失败');
        }
    }

    /**
     * 分类详情页
     */

    public function getIndex()
    {

        return view('admin.cate.index',['data'=>self::getCates()]);
    }

    /**
     * 删除的执行动作
     */

     public function getDelete($id)
    {
        // 查询 当前分类下面是否有子类
        $res = DB::table('sad_type')->where('pid',$id)->first();
        if($res){
            return back()->with('error','当前类别有子类，不允许删除');
        }

        $res = DB::table('sad_type')->where('id',$id)->delete();
        if($res){
            return redirect('/cate/index')->with('success','删除成功');
        }else{
            return back()->with('error','删除失败');
        }
    }

    /**
     * 执行修改动作
     */
    public function getEdit($id)
    {

        // $status = DB::table('sad_type')->where('id',$id)->get();

          
        // if($status[0]['status']==0)
        // {

        //     // $status[0]['status']=1;
        //     $res = DB::table('sad_type')->where('id',$id)->update(['status'=>1]);
        //     if($res)
        //     {
        //         return redirect('/cate');

        //     }else{

        //         return back()->with('errors','修改失败');
        //     }

        // }elseif($status[0]['status']==1)
        // {

        //    // $status[0]['status']=0; 
        //    $res = DB::table('sad_type')->where('id',$id)->update(['status'=>0]);
        //     if($res)
        //     {
        //         return redirect('/cate');

        //     }else{

        //         return back()->with('errors','修改失败');
        //     }

        // } 

        //判断是否存在子分类,如果存在则不可以修改状态
        $resu = DB::table('sad_type')->where('pid',$id)->get();

        if($resu)
        {
            $data = DB::table('sad_type')->where('pid',$id)->lists('status');
            foreach($data as $k=>$v)
            {

                if($v==1)
                {
                   $status = DB::table('sad_type')->where('id',$id)->get();
                   
                    if($status[0]['status']==0)
                    {

                        $res = DB::table('sad_type')->where('id',$id)->update(['status'=>1]);
                        if($res)
                        {
                            return redirect('/cate');

                        }else{

                            return back()->with('error','foreachif=1修改失败');
                        }

                    }else
                    {

                        $res = DB::table('sad_type')->where('id',$id)->update(['status'=>0]);
                        if($res)
                        {
                            return redirect('/cate');

                        }else{

                            return back()->with('error','修改失败');
                        }

                    } 


                }else
                {

                    return back()->with('error','修改失败,有可用的子分类');
                }
            }

        }else
        {
            $status = DB::table('sad_type')->where('id',$id)->get();
            if($status[0]['status']==0)
            {

                // $status[0]['status']=1;
                $res = DB::table('sad_type')->where('id',$id)->update(['status'=>1]);
                if($res)
                {
                     return redirect('/cate');

                }else{

                     return back()->with('error','修改失败');
                }

            }else
            {

                // $status[0]['status']=0; 
                $res = DB::table('sad_type')->where('id',$id)->update(['status'=>0]);
                if($res)
                {
                    return redirect('/cate');

                }else
                {

                 return back()->with('error','修改失败');
                }

            }             
        }



    }
}
